package net.angrynut.web.handler.endpoint;

import com.google.common.collect.Lists;
import org.springframework.boot.actuate.autoconfigure.TraceRepositoryAutoConfiguration;
import org.springframework.boot.actuate.trace.Trace;
import org.springframework.boot.actuate.trace.TraceRepository;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 这个会覆盖 actuator 中默认的 `/trace` 接口中保存 trace 的行为。
 * 默认配置见 {@link TraceRepositoryAutoConfiguration}。
 *
 * 你可以把 trace 持久化，这里简单起见，直接搞了。
 */
@Component
public class DemoTraceRepository implements TraceRepository {

    private List<Trace> traces = null;

    @Override
    public List<Trace> findAll() {
        return traces;
    }

    @Override
    public void add(Map<String, Object> traceInfo) {
        traces = Lists.newArrayList(new Trace(new Date(), traceInfo));
    }
}
